package pe.com.cruzdelsur.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.SessionFactory;

import pe.com.cruzdelsur.dominio.Plantilla;
import pe.com.cruzdelsur.dominio.Solicitud;

public class SolicitudDaoImpl implements SolicitudDao {

	private SessionFactory sessionFactory;
	
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	
	@Override
	public void insertar(Solicitud solicitud) {
		getSessionFactory().getCurrentSession().save(solicitud);
		
	}

	@Override
	public void actualizar(Solicitud solicitud) {
		getSessionFactory().getCurrentSession().update(solicitud);
		
	}

	@Override
	public void eliminar(Solicitud solicitud) {
		getSessionFactory().getCurrentSession().delete(solicitud);
		
	}

	@Override
	public Solicitud obtener(int id) {
		List list = getSessionFactory().getCurrentSession()
				.createQuery("from Solicitud where solicitudId=?").setParameter(0, id)
				.list();
		return (Solicitud) list.get(0);
	}

	@Override
	public List<Solicitud> listar() {
		List list = getSessionFactory().getCurrentSession()
				.createQuery("from Solicitud where estado > 0 ").list();
		return list;
	}

	@Override
	public Solicitud buscar(Solicitud solicitud){
//		List list = getSessionFactory().getCurrentSession()
//				.createQuery("from Solicitud  where upper(descripcion) LIKE :descripcion").
//				setParameter("descripcion", "%" + descripcion.toString().toUpperCase() + "%")				
//				.list();
		
		List list = getSessionFactory().getCurrentSession().createQuery("from Solicitud where solicitudId=:id").
				setParameter("id", solicitud.getSolicitudId()).list();
	
		return (Solicitud)list.get(0);
		
	}
	
	public List<Solicitud> buscarLista(Solicitud solicitud){
		List list = null;
		if (solicitud!=null){
			if (solicitud.getSolicitante()!=null && solicitud.getSolicitante()!=""){
				list = getSessionFactory().getCurrentSession()
						.createQuery("from Solicitud  where solicitante LIKE :descripcion").
						setParameter("descripcion", "%" + solicitud.getSolicitante().toString()+ "%")				
						.list();
			}else{
				list = getSessionFactory().getCurrentSession()
						.createQuery("from Solicitud where estado > 0 ").list();
			}
		}
		return list;		
	}	


}
